home *** CD-ROM | disk | FTP | other *** search
- Path: cnn.nas.nasa.gov!not-for-mail
- From: thorpej@lestat.nas.nasa.gov (Jason R Thorpe)
- Newsgroups: comp.sys.m68k
- Subject: Re: Req: 68020+ assembler for unix systems
- Date: 29 Jan 1996 08:54:09 -0800
- Organization: Numerical Aerodynamic Simulation Project - NASA Ames
- Message-ID: <4eiu3i$9f7@lestat.nas.nasa.gov>
- References: <4ei0qc$fq1@mordred.cc.jyu.fi>
- NNTP-Posting-Host: lestat.nas.nasa.gov
-
- In article <4ei0qc$fq1@mordred.cc.jyu.fi>,
- Aki Laukkanen <daeron@co.jyu.fi> wrote:
-
- >I'm in need of a macro assembler which supports 68020+ processors. This should
- >work on unix systems such as linux/i386. I checked m68k-faq already but found
- >nothing suitable. Yes, I know about gas but I need one conforming to Motorola
- >syntax, not the weird (IMHO) MIT one. Any info appreciated.
-
- I was under the impression that the latest version of GAS supported
- the weird (IMHO :-) Motorola syntax. I could be mistaken, but I could have
- sworn that a friend of mine at Cygnus mentioned that to me. In any case,
- I have a script written by Charles Hannum for NetBSD that converts
- Motorola syntax to MIT syntax. NetBSD currently uses it to pre-process
- the Motorola 68040 FPSP. The script is appended below.
-
- ----- snip -----
-
- #!/bin/sh
- # $NetBSD: asm2gas,v 1.3 1994/10/26 07:48:49 cgd Exp $
-
- #
- # Copyright (c) 1994 Charles Hannum. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions
- # are met:
- # 1. Redistributions of source code must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- # 2. Redistributions in binary form must reproduce the above copyright
- # notice, this list of conditions and the following disclaimer in the
- # documentation and/or other materials provided with the distribution.
- # 3. All advertising materials mentioning features or use of this software
- # must display the following acknowledgement:
- # This product includes software developed by Charles Hannum.
- # 4. The name of the author may not be used to endorse or promote products
- # derived from this software without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #
-
- # This ugly script converts assembler code from Motorola's format to a
- # form that gas (MIT syntax) can digest.
-
- cat $1 | sed -e '
- # format canonicalization
-
- /[ ]IDNT[ ]/{s/^/|/;p;d;}
- /^\*/{s//|/;p;d;}
- s/;/|/
- /[ ]equ[ ]/{
- s/\([A-Za-z_][A-Za-z0-9_]*\)[ ]*equ[ ]*/\1,/
- s/[ ][ ]*\(.*\)$/ |\1/
- s/ ||/ |/
- s/^/ .set /
- p;d
- }
- s/^\([A-Za-z_][A-Za-z0-9_]*\)[ ][ ]*/\1: /
- s/^\([A-Za-z_][A-Za-z0-9_]*\)$/\1:/
- /^[A-Za-z_][A-Za-z0-9_]*:/{
- h
- s/:.*$/:/
- p
- g
- s/^.*:[ ]*/ /
- /^ $/d
- }
- /^[ ][ ]*\([.a-zA-Z][.a-zA-Z0-9]*\)/{
- h
- s///
- s/^[ ][ ]*//
- s/[ ][ ]*\(.*\)$/ |\1/
- s/ ||/ |/
- x
- s/^[ ][ ]*//
- s/[ ][ ]*.*$/ /
- y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
- s/^/ /
- G
- s/\n//
- }
- ' | sed -e '
- # operator conversion
-
- s/^ section 7/ .text/
- s/^ section 8/ .text/
- s/^ section 15/ .data/
- /^ include/{s/include[ ]/.include "/;s/\.h[ ]*$/.defs"/;p;d;}
- s/^ xref/| xref/
- s/^ end/| end/
- s/^ xdef/ .global/
-
- s/^ dc\.l/ .long/
- s/^ dc\.w/ .short/
- s/^ dc\.b/ .byte/
-
- /^ [aceg-z]/{
- /^ add[aiqx]*\.[bwl] /{s/\.//;p;d;}
- /^ andi*\.[bwl] /{s/\.//;p;d;}
- /^ as[lr]\.[bwl] /{s/\.//;p;d;}
- /^ clr\.[bwl] /{s/\.//;p;d;}
- /^ cmp[i2]*\.[bwl] /{s/\.//;p;d;}
- /^ eori*\.[bwl] /{s/\.//;p;d;}
- /^ lea\.l /{s/\..//;p;d;}
- /^ ls[lr]\.[bwl] /{s/\.//;p;d;}
- /^ move[acmqs]*\.[bwl] /{s/\.//;p;d;}
- /^ mul[su]\.[wl] /{s/\.//;p;d;}
- /^ neg\.[bwl] /{s/\.//;p;d;}
- /^ ori*\.[bwl] /{s/\.//;p;d;}
- /^ ro[lrx]*\.[bwl] /{s/\.//;p;d;}
- /^ sub[aiqx]*\.[bwl] /{s/\.//;p;d;}
- /^ swap\.w /{s/\..//;p;d;}
- /^ s\([a-tv-z][a-z]*\)\.b /{s/\..//;p;d;}
- /^ tst\.[bwl] /{s/\.//;p;d;}
- p;d
- }
-
- /^ bchg\.[bl] /{s/\..//;p;d;}
- /^ bclr\.[bl] /{s/\..//;p;d;}
- /^ bset\.[bl] /{s/\..//;p;d;}
- /^ btst\.[bl] /{s/\..//;p;d;}
- /^ div[sul]*\.[wl] /{s/\.//;p;d;}
- /^ fabs\.[sdx] /{s/\.//;p;d;}
- /^ fadd\.[sdxbwl] /{s/\.//;p;d;}
- /^ fcmp\.[sdxbwl] /{s/\.//;p;d;}
- /^ fdiv\.[sdx] /{s/\.//;p;d;}
- /^ fmove[mx]*\.[sdxbwl] /{s/\.//;p;d;}
- /^ fmul\.[sdx] /{s/\.//;p;d;}
- /^ fneg\.[sdx] /{s/\.//;p;d;}
- /^ fsqrt\.[sdx] /{s/\.//;p;d;}
- /^ fsub\.[sdxbwl] /{s/\.//;p;d;}
- /^ ftst\.[sdx] /{s/\.//;p;d;}
-
- /^ b[a-eg-z][a-z]*\.b /{s/\.b/s/;p;d;}
- /^ b[a-eg-z][a-z]*\.w /{s/\.w//;p;d;}
- /^ b[a-eg-z][a-z]*\.l /{s/\.l/l/;p;d;}
- /^ db[a-z][a-z]*\.w /{s/\.w//;p;d;}
- /^ fb[a-eg-z][a-z]*\.w /{s/\.w//;p;d;}
- /^ fb[a-eg-z][a-z]*\.l /{s/\.l/l/;p;d;}
- ' | sed -e '
- # operand conversion
-
- s/\([^_a-zA-Z0-9]\)FPIAR\([^_a-zA-Z0-9]\)/\1FPI\2/g
- s/\([^_a-zA-Z0-9]\)FPIAR\([^_a-zA-Z0-9]\)/\1FPI\2/g
- s/\([^_a-zA-Z0-9]\)FPIAR$/\1FPI/g
- s/\([^_a-zA-Z0-9]\)fpiar\([^_a-zA-Z0-9]\)/\1fpi\2/g
- s/\([^_a-zA-Z0-9]\)fpiar\([^_a-zA-Z0-9]\)/\1fpi\2/g
- s/\([^_a-zA-Z0-9]\)fpiar$/\1fpi/g
-
- s/\$/0x/g
- s/#:/#:0x/g
-
- s/-(\([sSpPaA][pPcC0-7]\))/\1@-/g
- s/(\([sSpPaA][pPcC0-7]\))+/\1@+/g
- s/\([-+A-Za-z0-9_]*\)(\([sSpPaA][pPcC0-7]\)\([),]\)/\2@(\1\3/g
-
- s/\.\([bBwWlL])\)/:\1/g
- s/\.\([bBwWlL]\)\*\([0-9][0-9]*)\)/:\1:\2/g
- s/\*\([0-9][0-9]*\))/:l:\1)/g
- s/{\([0-9][0-9]*\):\([0-9][0-9]*\)}/{#\1:#\2}/g
- s/{\([dD][0-7]\):\([0-9][0-9]*\)}/{\1:#\2}/g
-
- s/@(0*)/@/g
- s/(,/(/g;s/:)/)/g
-
- # make up for a gas bug
- /^ fmovemx /{
- s/ \([fF][pP][0-7]\),/ \1-\1,/
- s/,\([fF][pP][0-7]\) /,\1-\1 /
- s/,\([fF][pP][0-7]\)$/,\1-\1/
- }
- '
-
- --
- Jason R. Thorpe thorpej@nas.nasa.gov
- NASA Ames Research Center Home: 408.866.1912
- NAS: M/S 258-6 Work: 415.604.0935
- Moffett Field, CA 94035 Pager: 415.428.6939
-